package com.aaa.a1105第二遍.demo03;



import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author 荆豪峰
 * @version 1.0
 */
public class Test05 {
    public void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Tom",24,"美国",'M'));
        personList.add(new Person("欧阳雪",18,"中国",'F'));
        personList.add(new Person("Harley",22,"英国",'F'));
        personList.add(new Person("小梅",20,"中国",'F'));
        personList.add(new Person("向天笑",20,"中国",'M'));
        personList.add(new Person("李康",22,"中国",'M'));
        personList.add(new Person("何雪",21,"中国",'F'));
        personList.add(new Person("李康",22,"中国",'M'));

//        Long collect =personList.stream().collect(Collectors.counting());
//        System.out.println(collect);
//        Double collect = personList.stream().collect(Collectors.averagingInt(item -> item.getAge()));
//        System.out.println(collect);
//        Optional<Person> collect = personList.stream().collect(Collectors.maxBy(((o1, o2) -> o1.getAge() - o2.getAge())));
//        System.out.println(collect);

       // Integer collect = personList.stream().collect(Collectors.summingInt(item -> item.getAge()));
      //  System.out.println(collect);

        //        Set<String> set = personList.stream().filter(item -> item.getAge() > 20)
//                .filter(item -> item.getCountry().equals("中国"))
//                .map(item -> item.getName())
//                .collect(Collectors.toSet());
//        System.out.println(set);
        Map<String, Person> map = personList.stream().filter(item -> item.getAge() > 20)
                .filter(item -> item.getCountry().equals("中国"))
                .collect(Collectors.toMap(item -> item.getName(), item -> item));
        System.out.println(map);

        Map<Character, List<Person>> collect = personList.stream().collect(Collectors.groupingBy(item -> item.getSex()));
        System.out.println(collect);

    }
    class Person {
        private String name;
        private Integer age;
        private String country;
        private char sex;

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", country='" + country + '\'' +
                    ", sex=" + sex +
                    '}';
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

        public String getCountry() {
            return country;
        }

        public void setCountry(String country) {
            this.country = country;
        }

        public char getSex() {
            return sex;
        }

        public void setSex(char sex) {
            this.sex = sex;
        }

        public Person(String name, Integer age, String country, char sex) {
            this.name = name;
            this.age = age;
            this.country = country;
            this.sex = sex;
        }
    }

}
